// Copyright 2017 Benjamin Glatzel
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#pragma once

namespace Intrinsic
{
namespace Core
{
namespace TimingHelper
{
void timerStart();
uint32_t timerEnd();
void sleep(uint32_t p_Ms);
uint64_t getMicroseconds();
uint64_t getMilliseconds();

struct AutoTimer
{
  AutoTimer(const char* p_Name) : _name(p_Name) { _INTR_PROFILE_START(); }
  ~AutoTimer() { _INTR_PROFILE_END(_name.c_str()); }

  _INTR_STRING _name;
};
}
}
}
